package config

import (
	"fmt"

	"github.com/caarlos0/env/v11"
)

type (
	Config struct {
		Mysql   Mysql
		Log     Log
		HTTP    HTTP
		Swagger Swagger
	}

	// Log -.
	Log struct {
		Level string `env:"LOG_LEVEL,required"`
	}

	HTTP struct {
		Port string `env:"HTTP_PORT,required"`
	}

	// Mysql -.
	Mysql struct {
		URL string `env:"MYSQL_URL,required"`
	}

	// Swagger -.
	Swagger struct {
		Enabled bool `env:"SWAGGER_ENABLED" envDefault:"true"`
	}
)

func NewConfig() (*Config, error) {
	cfg := &Config{}

	if err := env.Parse(cfg); err != nil {
		return nil, fmt.Errorf("config error: %w", err)
	}

	return cfg, nil

}
